There are many instances where a communications connection can be severed during normal computer operations. A communications connection can be lost when either a client computer or a server computer malfunctions. A communications connection can also be lost when the medium used to convey information between two systems is compromised. In this case, communications protocols governing the communications channel may dictate that a communications channel is to be abandoned (i.e. timed out) by one or both of the computer systems engaged in a communications session. Typically, when a communications connection is severed, or otherwise lost, the normal recovery mechanism used, up until now, was to reset the connection. By resetting the connections, a prior connection was simply discarded and there was no attempt to recover a connection mid-stream. Any data flowing through the connection was deemed incomplete and was resent using a new connection. In a practical sense, a connection may be used to transfer a large block of data. At any point during the communication, the communications channel could be lost. In this case, even if, for example, 99.9999% or more of the large data block was already sent, transmission of the entire data block would need to be repeated.
Although prior methods for reestablishing a connection are acceptable in a wide variety of applications, there are applications where the latency associated with abandonment of a current data transfer is not acceptable. For example, in a high-availability system, the need to communicate information as rapidly as possible is of paramount concern. Any latency suffered in such a high-availability system can result in a reduction is overall system availability. A loss in system availability may have catastrophic results.
Consider a high-availability air traffic control system. A system used for air traffic control may need to communicate information pertaining to a collision avoidance situation. If the information pertaining to the collision avoidance situation is not communicated to an aircraft in a timely manner, a mid-air collision may result. Another example of a high-availability system includes a real-time medical instrumentation system. Where patient data needs to be communicated as quickly as possible, the system may not be able to tolerate any latency associated with reestablishing a connection and re-conveyance of data to a host system. There are many other applications that simply can not tolerate the latency associated with prior methods of communication channel recovery. Some other applications include, but are not limited to Home Land Security and military command, control and intelligence gathering systems.
Wireless systems, or other systems where the aggregate data-carrying bandwidth is low, also can not tolerate complete abandonment of a communications channel. Consider a situation where a low-data-rate communications medium is the only medium available between two computer systems. In this situation, the loss of a communications channel could result in user frustration as a data block that was almost entirely transmitted needs to be retransmitted using a reestablished, low-data-rate communications channel. It should also be appreciated that the notion of a low-data-rate communications medium is a relative concept. For example, a 56 kilo-bit-per-second modem channel could be considered a low-data-rate medium today when surfing the Internet, whereas a digital subscriber line (DSL) connection may be considered too slow when transmitting large blocks of data.